pub fn convert_base(num_str: &str, to_base: u32) -> String {
    // 第一步：解析输入字符串，获取数字和源进制
    let parts: Vec<&str> = num_str.split('(').collect();
    let num = parts[0].trim(); // 获取数字部分
    let from_base: u32 = parts[1].trim_end_matches(')').parse().expect("Invalid base");

    // 第二步：将源进制的数字转换为十进制
    let decimal = u64::from_str_radix(num, from_base).expect("Invalid number");

    // 第三步：将十进制数字转换为目标进制
    if decimal == 0 {
        return "0".to_string();
    }

    let mut result = String::new();
    let mut n = decimal;

    // 注意：在此确保 to_base 被转换为 u64，以便与 n（u64）匹配
    let to_base_u64 = to_base as u64;

    while n > 0 {
        let remainder = n % to_base_u64;  // 显式转换为 u64
        let digit = if remainder < 10 {
            (b'0' + remainder as u8) as char
        } else {
            // 10-15 映射为 a-f (或 A-F)
            (b'a' + (remainder - 10) as u8) as char
        };
        result.push(digit);
        n /= to_base_u64;  // 显式转换为 u64
    }

    // 反转结果，因为我们是从低位到高位逐步生成的
    result.chars().rev().collect()
}
